$(document).ready(function(){
  // var vConsole = new VConsole()

  // /*GA点击统计*/
  var eventCategory = window.location.pathname.split('/')[2];
  $('.S_analyticsLabel').each(function () {
    $(this).click(function () {
      ga('send', 'event', eventCategory, 'click', $(this).attr('label'));
      ga('gz.send', 'event', eventCategory, 'click', $(this).attr('label'));
    });
  });

  var shareLink = 'http://tpn.gzl.com.cn/zt/20181122_38anniversaryCelebration_MOBILE/index.html';
  var shareTitle = '广之旅喊你来生日趴！据闻要壕送¥1000旅游金';
  var shareDesc = '庆生三大礼，错过只能再等一年！';

  weChatConfig(shareLink, shareTitle, shareDesc, function () {
    ga('send', 'event', eventCategory, 'click', '广之旅生日趴');
    ga('gz.send', 'event', eventCategory, 'click', '广之旅生日趴');
  })


  var wxUserInfo = getQueryString('wxUserInfo')
  if (!wxUserInfo) { //http://tpn.gzl.com.cn/static/activity/2018anniversaryCelebration/html/index.html   http://tpn.gzl.com.cn/zt/20181122_38anniversaryCelebration_MOBILE/index.html
    window.location = 'http://weixin.gzl.cn/account/authorize.shtml?goToUrl=http://tpn.gzl.com.cn/zt/20181122_38anniversaryCelebration_MOBILE/index.html'
    return;
  }
  window.userInfo = JSON.parse(wxUserInfo)
  console.log(window.userInfo) 
  var openId = userInfo.openid

  // var openId = 'oFMmnjsqqcIM5U9NDcDxENxMpYaQ'
  var messageId = '40298198675ebde101675ef2f399000b'  
  var activityId = '40298198675ebde10167628e0a8201a5' 
  var channel = 'weixin'
  var islot = false
  var rem = document.body.clientWidth / 7.5
  var msgRollTimer = null
  var msgNewTimer = null
  var msgNewTime = 1000 * 60
  var msgOldLen
  var newst
  var oldst = 0
  var scrollGet = true
  var isFirst = true
  var tipObj = {
    'lotRegular': `
                  <h4 class="tip-title">活动规则</h4>
                  <p class="tip-txt txt-left">
                  1.活动时间：11月30日-12月31日；</br>
                  2.本活动仅限广之旅会员参与；</br>
                  3.活动期间，每位会员每日有1次抽奖机会；</br>
                  4..同一个会员账号、同一个微信ID、同一个姓名、同一个联系电话均视为同一个人，不可重复获奖。若因技术问题出现重复获奖情况，将以第一次中奖的奖品派发。</br>
                  5.本活动规则由广之旅根据国家相关法律法规及规章制度进行解释，在法律允许的范围内保留对本次活动的变更权，包括但不限于参加资格、奖励方式、暂停或取消本活动等。</br>
                  </p>
                  <button class="tip-btn">关闭</button>
                  `,
    'lotNoPrize': `
                  <p class="tip-txt">
                  这位小粉丝</br>
                  你还没有中奖呢！</br>
                  活动期间</br>
                  每天都有机会哦</br>
                  </p>
                  <button class="tip-btn">关闭</button>
                  `,
    'lotNoChances': `
                    <p class="tip-txt">
                    今天的游戏机会已经用完
                    明天再来哦！
                    </p>
                    <button class="tip-btn">去别处逛逛</button>
                    `,
    'isNotLot': `
                <p class="tip-txt">
                运气就差一点点
                奖品被别人领走了
                </p>
                <button class="tip-btn">去别处逛逛</button>
                `,
    'prizeRed': `<h4 class="tip-title">恭喜你获得1000元旅游红包</h4>
                <p class="tip-txt txt-left">
                  红包已发送至您的广之旅会员账号，满1500元即可使用，有效期为15天，您可直接通过【广之旅】微信公众号-【我】-【会员中心】查询。红包仅限于广之旅自营产品。
                </p>
                <a href="http://tpn.gzl.com.cn/zt/20181107_anniversaryCelebration_MOBILE/index.html?utm_source=birthdayplay" class="S_analyticsLabel" label="立即使用">
                  <button class="tip-btn">立即使用</button>
                </a>`,
    'prizeRoute': `<h4 class="tip-title">恭喜你获得指定路线半价</h4>
                <p class="tip-txt txt-left">
                  半价优惠券已发送至您的广之旅会员账号，您可进入【广之旅】微信公众号-菜单栏【我】-【会员中心】查看。红包仅限指定线路产品。
                </p>
                <a href="http://tpn.gzl.com.cn/zt/20181107_anniversaryCelebration_MOBILE/index.html?utm_source=birthdayplay" class="S_analyticsLabel" label="立即使用">
                  <button class="tip-btn">立即使用</button>
                </a>`,
    'prizeCake': `<h4 class="tip-title">恭喜你获得¥80东海堂蛋糕券</h4>
                  <p class="tip-txt txt-left">
                    兑奖时间：1月2-7日</br>
                    兑奖地址：广东省广州市白云区乐嘉路1号广之旅总部4楼</br>
                    兑奖电话：020-36284303
                  </p>
                  <a href="https://jinshuju.net/f/rk2xRT"  class="S_analyticsLabel" label="邮寄">
                    <button class="tip-btn">我要邮寄（自付邮费）</button>
                  </a>`,
    'prizeCup': `<h4 class="tip-title">恭喜你获得弹跳真空保温杯</h4>
                  <p class="tip-txt txt-left">
                    兑奖时间：1月2-7日</br>
                    兑奖地址：广东省广州市白云区乐嘉路1号广之旅总部4楼</br>
                    兑奖电话：020-36284303
                  </p>
                  <a href="https://jinshuju.net/f/rk2xRT"  class="S_analyticsLabel" label="邮寄">
                    <button class="tip-btn">我要邮寄（自付邮费）</button>
                  </a>`,
    'msgRegular': `
                  <h4 class="tip-title">活动规则</h4>
                  <p class="tip-txt txt-left">
                  1.活动时间：11月30日-12月31日，中奖名单将于结束后的5个工作日在【广之旅】微信公众号公布；</br>
                  2.本活动仅限广之旅会员参与；</br>
                  3.活动期间，每位会员总共有5次留言机会；</br>
                  4.同一个会员账号、同一个微信ID、同一个姓名、同一个联系电话均视为同一个人，不可重复获奖。若因技术问题出现重复获奖情况，将以第一次中奖的奖品派发。</br>
                  5.本活动规则由广之旅根据国家相关法律法规及规章制度进行解释，在法律允许的范围内保留对本次活动的变更权，包括但不限于参加资格、奖励方式、暂停或取消本活动等。</br>
                  </p>
                  <button class="tip-btn">关闭</button>
                  `,
    'maxMsgNum': `<p class="tip-txt">小旅感受到你的爱了<br/>把更多留言机会给其他人哦</p>
                  <button class="tip-btn">去别处逛逛</button>`,
    'wordNumTip': `<p class="tip-txt">请输入有效的留言!</p>
                  <button class="tip-btn">关闭</button>`,
    'mesSuccess': `<p class="tip-txt">留言成功!</p>
                  <button class="tip-btn">关闭</button>`,
    'mesExp': `<p class="tip-txt">留言活动已结束,请等待公布结果!</p>
                  <button class="tip-btn">关闭</button>`          
  }

  // 抽奖规则
  $('.lot-regular-btn').on('click', function () {
    showTip(tipObj.lotRegular)
  })
  // 抽奖奖品箱
  $('.lot-prize-btn').on('click', function () {
    isLogin(function(token){
      getAwardList(activityId, channel, token, function(data){
        var lists = data.data;
        var prize_obj;
        if (data.message == '获取奖品列表成功' && lists[0]) {
          var result = lists[0].awardName
          switch (result) {
            case '¥1000旅游红包':
              showTip(tipObj.prizeRed)
              break;
            case '¥80东海堂蛋糕券':
              showTip(tipObj.prizeCake)
              break;
            case '真空保温杯':
              showTip(tipObj.prizeCup)
              break;
            case '谢谢参与':
              showTip(tipObj.lotNoPrize)
              break;
            default:
              break;
          }
        } else {
          showTip(tipObj.lotNoPrize)
        }
      })
    })
  })

  // 开始抽奖
  $('.lot-btn').click(function () {
    if (islot) return false;
    var circleTimer = null,
        circle = 0,       // 转的圈数
        circleTotal = 7,  // 转的总圈数
        imgIndex = -1,    // 图片开始索引, 因为图片是从0开始的, -1+1=0
        circleSpeed = 70;  // 转盘速度, 也是执行一次anmationRoll的时间, circleSpeed越大越慢,越小越快
    var prize_num  // 奖品索引
    isLogin(function(token){
      getTicket(activityId, channel, token, function (data) {
        if (data.desc == 'The activity has stopped or expired') {
          alert('不在活动时间内！')
        } else if (data.data.times >= 1) {
          playLottery(activityId, channel, data.data, token, function (data) {
            if (data.message == 'PlayActionCallback execution error') {
              showTip(tipObj.lotNoPrize)
            } else {
              if (data.data.status === 1) {
                result = data.data.name
                switch (result) {
                  case '¥1000旅游红包':
                    prize_num = 6     
                    anmationRoll()
                    break;
                  case '¥80东海堂蛋糕券':
                    prize_num = 7     
                    anmationRoll()
                    break;
                  case '真空保温杯':
                    prize_num = 8     
                    anmationRoll()
                    break;
                  case '谢谢参与':
                    prize_num = 5     
                    anmationRoll()
                    break;
                  default:
                    break;
                }
              } else {
                showTip(tipObj.lotNoPrize)
              }
            }
          })
        } else {
          showTip(tipObj.lotNoChances)
        }
      })
    })

    // 抽奖转盘
    function anmationRoll() {
      imgIndex++
      circle = Math.floor(imgIndex / 8)
      // 中间几圈, 第一圈到倒数第二圈, 速度最快
      if (circle < (circleTotal - 2) && circle >= 1) {  
        circleSpeed -= 70
      } else if (circle >= circleTotal && imgIndex % 9 == prize_num) {
        clearTimeout(circleTimer)
        switch (prize_num) {
          case 5:
            showTip(tipObj.isNotLot)
            break;
          case 6:
            showTip(tipObj.prizeRed)
            break;
          case 7:
            showTip(tipObj.prizeCake)
            break;
          case 8:
            showTip(tipObj.prizeCup)
            break;
          default:
            break;
        }
        return false;
      } else { // 第一圈的速度
        circleSpeed += 10
      }

      if (circleSpeed < 20) {
        circleSpeed = 20
      } else if (circleSpeed > 1500) {
        circleSpeed = 500
      }
      $('.lot-list-item').removeClass('lot-active')
      $('.lot-list-item' + (imgIndex % 9 + 1)).addClass('lot-active')
      circleTimer = setTimeout(anmationRoll, circleSpeed)
    }
  })


  // 当用户触摸留言板时,停止滚动
  $('.message-box').on('touchstart', function () {
    clearTimeout(msgRollTimer)
  })

  $('.message-box').on('touchend', function () {
    msgRollTimer = setTimeout(messageRoll,5000)
  })

  // 留言滚动
  function messageRoll() {
    clearTimeout(msgRollTimer)
    var _scrollTop = $(".message-scroll").scrollTop()          // scroll滚动高度
    var _clientHeight = $('.message-scroll')[0].clientHeight   // scroll可视区高度
    var _height = $('.message-list').height()                  // 列表总高度
    if ((_scrollTop + _clientHeight) == _height) {
      console.log(_scrollTop+_clientHeight, _height)
      clearTimeout(msgRollTimer)
    } 
    else if(_scrollTop + _clientHeight >= _height - 4 * rem && msgOldLen >= 20){ // 将滚动到底部的时候获取旧留言
      $(".message-scroll").animate({scrollTop:_scrollTop + 1 * rem});
      msgRollTimer = setTimeout(messageRoll,1000)
      getOldMsg()
      console.log('scroll')
    } 
    else {
      $(".message-scroll").animate({scrollTop:_scrollTop + 1 * rem});
      msgRollTimer = setTimeout(messageRoll,1000)
    }
  }

  $(".message-scroll").scroll(function () {   
    var __scrollTop = $(".message-scroll").scrollTop()          // scroll滚动高度
    var __clientHeight = $('.message-scroll')[0].clientHeight   // scroll可视区高度
    var __height = $('.message-list').height()  
    if(__scrollTop + __clientHeight >= __height - 4 * rem && msgOldLen >= 20){ // 将滚动到底部的时候获取旧留言
      // $(".message-scroll").animate({scrollTop:__scrollTop + 1 * rem});
      // msgRollTimer = setTimeout(messageRoll,1000)
      getOldMsg()
      console.log('scroll')
    } 
  })

  // 一开始获取旧留言
  getOldMsg()
  function getOldMsg() {  
    if (!scrollGet) return false;
    scrollGet = false
    getOldMessage(messageId, oldst, function(data){
      if (data.responseObject[0]){
        var oldMsgArr = orderMsg(data.responseObject)
        if (isFirst) {
          newst = oldMsgArr[0].ts
          isFirst = false
        }
        msgOldLen = oldMsgArr.length
        oldst = oldMsgArr[msgOldLen - 1].ts
        console.log('oldMsgArr: ', oldMsgArr)
        // 创建html塞进Dom
        setTimeout(function(){
          createHtml(oldMsgArr, false)
          scrollGet = true
  
          // 留言滚动
          msgRollTimer = setTimeout(messageRoll,1000)
        }, 2000)
      }
    })
  }

  // 每隔一段时间请求一次新的留言
  msgNewTimer = setTimeout(getNewMsg, msgNewTime)
  function getNewMsg(){
    clearTimeout(msgNewTimer)
    getNewMessage(messageId, newst, function(data){
      if (data.responseObject[0]){
        var newMsgArr = orderMsg(data.responseObject)
        newst = newMsgArr[0].ts
        console.log('newMsgArr: ', newMsgArr)        
        // 创建html塞进Dom
        setTimeout(function(){
          createHtml(newMsgArr, true)
        }, 1500)
      } 
      msgNewTimer = setTimeout(getNewMsg, msgNewTime)
    })
  }

  // 留言规则
  $('.msg-regular-btn').click(function(){
    showTip(tipObj.msgRegular)
  })

  // 发送留言
  $('.message-leave-btn').click(function () {
    console.log('before')
    isLogin(function(token){
      var message = $('.message-input').val()
      console.log('message', message)
      if (message) {
        leaveMessage(messageId, channel, openId, token, message, function (data) {
          console.log(data);
          if (data.desc == 'The activity has stopped or expired') {
            showTip(tipObj.mesExp)
            $('.message-input').val(' ')
          } else if (data.success && data.desc == '留言成功') {
            showTip(tipObj.mesSuccess)
            $('.message-input').val(' ')
          } else if(!data.success && data.desc == '超出留言次数'){
            showTip(tipObj.maxMsgNum)
          }
        })
      } else {
        showTip(tipObj.wordNumTip)
      }
    })
  })

  // tip关闭
  $(".tip-bg").click(function(e) {
    e.stopPropagation();
    $(".tip-box").hide();
  });
  $('.tip-box').on('click', '.tip-btn', function () {
    $('.tip-content').empty().parent('.tip-box').hide()
  })

  // tip-box show
  function showTip(dom) {
    $('.tip-content').empty().append(dom).parent().show()
  }

  
  //获取抽奖机会
  function getTicket(activityId, channel, token, callback) {
    var gameticket = "http://activity.gzl.com.cn/v2/lottery/getTicket/" + activityId;
    $.ajax({
      type: "GET",
      contentType: "application/json",
      dataType: 'json',
      url: gameticket,
      data: {
        channel: channel,
        ACTIVITY_AUTH_SSO_TOKEN: token
      },
      success: function (data) {
        callback(data);
      },
      error: function (data) {
        console.log('err:' + data.data);
        localStorage.removeItem('SSO_TOKEN');
        $('.login-box').show()
      }
    });
  }

  //开始抽奖
  function playLottery(activityId, channel, ticket, token, ticketback) {
    var playloturl = "http://activity.gzl.com.cn/v2/lottery/play/" + activityId;
    $.ajax({
      type: "POST",
      contentType: "application/x-www-form-urlencoded",
      dataType: 'json',
      url: playloturl,
      data: {
        nonce: ticket.nonce,
        timestamp: ticket.timestamp,
        token: ticket.token,
        channel: channel,
        ACTIVITY_AUTH_SSO_TOKEN: token
      },
      success: function (data) {
        ticketback(data);
      },
      error: function (data) {
        console.log('err:' + data);
      }
    });
  }

  //获取奖品列表
  function getAwardList(activityId, channel, token, callback) {
    var gameticket = "http://activity.gzl.com.cn/v2/lottery/getMyAwards/" + activityId;
    $.ajax({
      type: "GET",
      contentType: "application/json",
      dataType: 'json',
      url: gameticket,
      data: {
        ACTIVITY_AUTH_SSO_TOKEN: token,
        channel: channel

      },
      success: function (data) {
        callback(data);
      },
      error: function (data) {
        console.log('err:' + data.data);
        alert("哎呀，请求出错啦!");
      }
    });
  }

  // 获取url参数值
  function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg); //返回要匹配的参数
    return r ? decodeURIComponent(r[2]) : null;
  }           

  // 分享
  function weChatConfig(url, title, desc, shareback) {
    $.ajax({
      type: "GET",
      contentType: "application/json",
      async: true,
      data: {
        url: window.location.href
      },
      url: "http://weixin.gzl.cn/jssdkconfig/getConfig.json",
      success: function (data) {
        wx.config({
          debug: false,
          appId: data.appId, // 必填，公众号的唯一标识
          timestamp: data.timestamp, // 必填，生成签名的时间戳
          nonceStr: data.noncestr, // 必填，生成签名的随机串
          signature: data.signature, // 必填，签名，见附录1
          jsApiList: ['checkJsApi', 'onMenuShareAppMessage', 'onMenuShareTimeline']
        })
      },
      error: function (data) {
        if (XMLHttpRequest.status == 500) {
          var result = eval("(" + XMLHttpRequest.responseText + ")");
          $.weui.alert(result.jsonError.errorText);
        }
        console.log(data);
      }
    });

    wx.ready(function () {
      //获取微信分享到朋友
      wx.onMenuShareAppMessage({
        desc: desc, // 分享描述
        title: title, // 分享标题
        link: url, // 分享链接
        imgUrl: "http://tpn.gzl.com.cn/static/20181122_38anniversaryCelebration_MOBILE/images/share-img.png", // 分享图标
        type: '',
        dataUrl: '',
        success: function () {
          shareback();
        },
        cancel: function () {

        }
      });

      //分享朋友圈
      wx.onMenuShareTimeline({
        title: title, // 分享标题
        link: url, // 分享链接
        imgUrl: "http://tpn.gzl.com.cn/static/20181122_38anniversaryCelebration_MOBILE/images/share-img.png", // 分享图标
        type: '',
        dataUrl: '',
        success: function () {
          shareback();
        },
        cancel: function () {
          // 用户取消分享后执行的回调函数
        }
      });

    });

    wx.error(function (res) {
      console.log("验证失败：" + res);
    });
  }

  // 留言
  function leaveMessage(messageId, channel, openId, token, message, callback) {
    console.log(token)
    var submitMessage = "http://activity.gzl.com.cn/v2/leavemessage/submit/" + messageId;
    $.ajax({
      type: "GET",
      contentType: "application/json",
      dataType: 'json',
      url: submitMessage,
      data: {
        channel: channel,
        message: message,
        ACTIVITY_AUTH_SSO_TOKEN: token,
        openId: openId
      },
      success: function (data) {
        callback(data);
      },
      error: function (data) {
        console.log('err:' + data.data);
      }
    });
  }

  // 获取旧留言
  function getOldMessage(messageId, oldst, callback) {
    var oldMessage = "http://activity.gzl.com.cn/v2/leavemessage/showOldMessage"
    $.ajax({
      type: "GET",
      contentType: "application/json",
      dataType: 'json',
      url: oldMessage,
      data: {
        activityId: messageId,
        oldTimestamp: oldst
      },
      success: function (data) {
        callback(data);
      },
      error: function (data) {
        console.log('err:' + data.data);
      }
    });
  }

  // 获取新留言
  function getNewMessage(messageId, newst, callback) {
    var oldMessage = "http://activity.gzl.com.cn/v2/leavemessage/showMessage"
    $.ajax({
      type: "GET",
      contentType: "application/json",
      dataType: 'json',
      url: oldMessage,
      data: {
        activityId: messageId,
        lastTimestamp: newst
      },
      success: function (data) {
        callback(data);
      },
      error: function (data) {
        console.log('err:' + data.data);
      }
    });
  }

  // 通过openid获取用户的信息
  function getUserInfo(openId, callback){
		var get_info = 'http://weixin.gzl.cn/account/getWxUserInfo?openId=' + openId;
		$.ajax({
			type: "GET",
			contentType: "application/json",
			dataType: 'json',
			url: get_info,
			success: function (data) {
				callback(data);
			},
			error: function (data) {
				console.log('err:' + data.data);
				return false;
			}
		});
  }

  // 将留言数据整理
  function orderMsg(msgArr){
    var msgLen = msgArr.length
    if (msgLen == 0) return msgArr;
    for(var k = 0; k < msgLen; k++){
      var openId = msgArr[k].openId
      if(openId) {
        (function (m) {          
          getUserInfo(openId, function (data) {
            msgArr[m].avatar = data.headimgurl
            msgArr[m].userName = data.nickname
          })
        })(k)
      } else {
        msgArr[k].avatar = 'http://tpn.gzl.com.cn/static/20181122_38anniversaryCelebration_MOBILE/images/default-avatar.png'
      }
    }

    return msgArr
  }
  
  /**
   * 创建dom元素并塞进html
   * @param {*Array} msgArr 留言数组
   * @param {*Bollean} isNew 是否是新留言,是的话插入前面,不是插入后面
   */
  function createHtml(msgArr, isNew){
    var html = ''
    var len = msgArr.length
    for(var n = 0; n < len; n++){
      var avatar = msgArr[n].avatar ? msgArr[n].avatar : 'http://tpn.gzl.com.cn/static/20181122_38anniversaryCelebration_MOBILE/images/default-avatar.png'
      var name = msgArr[n].userName ? msgArr[n].userName : '忠实粉丝'
      // <div class="info-num">第'+ msgArr[n].rank +'评论</div>
      html += '<li class="message-list-item"><div class="avatar-box"><img src="'+ avatar +'" alt=""></div><div class="other-info"><div class="name-num-box"><div class="info-name">'+ name +'</div></div><p class="info-content">'+msgArr[n].msg+'</p></div></li>'
    }
    if (isNew) { 
      $('.message-list').prepend(html)
    } else {
      $('.message-list').append(html)
    }
  }

})